home *** CD-ROM | disk | FTP | other *** search
/ Mac Cube 4: Multimedia Applications / MacCube Volume 4: Multimedia Applications.iso / Graphics / NIH Image Folder / Macros / Animation next >
Text File  |  1993-09-01  |  2KB  |  89 lines

  1. {This file contains additional macros that work with stacks.}
  2.  
  3.  
  4. procedure CheckForStack;
  5. begin
  6.   if nPics=0 then begin
  7.     PutMessage('This macro requires a stack.');
  8.     exit;
  9.   end;
  10.   if nSlices=0 then begin
  11.     PutMessage('This window is not a stack.');
  12.     exit;
  13.   end;
  14. end;
  15.  
  16.  
  17. macro 'Add Slice [A]';    begin CheckForStack; AddSlice end;
  18. macro 'Delete Slice [D]'; begin CheckForStack; DeleteSlice end;
  19. macro 'First Slice [F]';  begin CheckForStack; SelectSlice(1) end;
  20. macro 'Last Slice [L]';   begin CheckForStack; SelectSlice(nSlices) end;
  21.  
  22. macro '(-' begin end;
  23.  
  24.  
  25. macro 'Make Surface Plot Movie…';
  26. var
  27.   i,OldStack,NewStack:integer;
  28.   N,PlotWidth,PlotHeight:integer;
  29.   ScaleFactor:real;
  30.   OneToOne:boolean;
  31. begin
  32.   RequiresVersion(1.50); 
  33.   CheckForStack;
  34.   SaveState;
  35.   OldStack:=PicNumber;
  36.   N:=nSlices;
  37.   PlotWidth:=GetNumber('Surface Plot Width:',300);
  38.   PlotHeight:=GetNumber('Surface Plot Height:',300);
  39.   SetNewSize(PlotWidth,PlotHeight);
  40.   MakeNewStack('Stack');
  41.   NewStack:=PicNumber;
  42.   SelectPic(OldStack);
  43.   for i:= 1 to N do begin
  44.     SelectSlice(1);
  45.     SurfacePlot;
  46.     SelectAll;
  47.     Copy;
  48.     Dispose;
  49.     SelectPic(NewStack);
  50.     if i<>1 then AddSlice;
  51.     Paste;
  52.     SelectPic(OldStack);
  53.     DeleteSlice;
  54.   end;
  55.   Dispose; {OldStack}
  56.   RestoreState;
  57. end;
  58.  
  59. macro 'Make Expression Movie…';
  60. {Requires the Expression 3.0b(or later) filter plug-in}
  61. var
  62.   width,height,nframes,i:integer;
  63. begin
  64.   RequiresVersion(1.52);
  65.   width:=GetNumber('Width:',200);
  66.   height:=GetNumber('Height:',width);
  67.   nframes:=GetNumber('Number of Frames:',50);
  68.   SetNewSize(width,height);
  69.   MakeNewStack('Stack');
  70.   MakeNewWindow('Temp');
  71.   filter('Reset');
  72.   for i:=1 to nframes do begin
  73.     SelectWindow('Temp');
  74.     filter('Expression 3.0');
  75.     SelectAll;
  76.     Copy;
  77.     SelectWindow('Stack');
  78.     if i<>1 then AddSlice;
  79.     paste;
  80.   end;
  81.   SelectWindow('Temp');
  82.   Dispose;
  83. end;
  84.  
  85.  
  86.  
  87.  
  88.  
  89.